home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / comm / misc / CapiRexxVoiceM.lha / bchanneljobs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-25  |  3.0 KB  |  154 lines

  1. #ifndef BCHANNELJOBS_H
  2. #define BCHANNELJOBS_H
  3. /*
  4. **
  5. **    $Id: bchanneljobs.h,v 1.2 1995/10/07 02:52:39 chris Exp $
  6. **    $Revision: 1.2 $
  7. **
  8. **    $Filename: developer/bchanneljobs.h $
  9. **    $Author: chris $
  10. **    $Date: 1995/10/07 02:52:39 $ 
  11. **    $Portability: ANSI $
  12. **
  13. **    B-Kanal Lese/Schreibjobs
  14. **
  15. **    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF RELOG AG.
  16. **
  17. **    COPYRIGHT (C) 1992-1995 BY RELOG AG, ZUERICH. ALL RIGHTS RESERVED.
  18. **    NO PART OF THIS SOFTWARE MAY BE COPIED, REPRODUCED, OR TRANSMITTED
  19. **    IN ANY FORM OR BY ANY MEANS,  WITHOUT THE PRIOR WRITTEN PERMISSION
  20. **    OF RELOG AG.
  21. **
  22. */
  23.  
  24. #include <stdio.h>
  25.  
  26. #include "os.h"
  27.  
  28.  
  29. #define B_BLOCKSIZE        2048        /* CAPI block size */
  30. #define B_BUFFERSIZE    32768        /* Read chunk size, must be a multiple of B_BLOCKSIZE!! */
  31.  
  32. #define B_VOLUME_MAX    32768        /* Maximale Lautstärke */
  33. #define B_VOLUME_SHIFT    15            /* LOG2(B_VOLUME_MAX) */
  34.  
  35.  
  36. /*
  37. **    Struktur eines Datenpuffers
  38. */
  39. struct Buffer
  40. {
  41.     U8        *Position;                /* Zeiger auf aktuelle Position in den Daten */
  42.     U16        ActLength;                /* Länge der daten im Puffer */
  43.     U16        TotalLength;            /* Totale Grösse des Datenpuffers */
  44.     BOOL    EndOfFile;                /* TRUE wenn End of File */
  45.     U8        Data[2];                /* Die Daten, variable Länge! */
  46. };
  47.  
  48.  
  49. /*
  50. **    Struktur eines B-Kanals
  51. */
  52. struct BChannel
  53. {
  54.     IC_NODE            Node;
  55.  
  56.     U32                NCCI;                /* NCCI des Kanals */
  57.  
  58.     IC_LIST            JobList;            /* Liste der aktuellen Jobs */
  59.     U32                IOProcess;            /* I/O-Prozess */
  60.  
  61.     struct Buffer    *WriteBuffer;        /* Zeiger auf zu manipulierende Daten */
  62.     struct Buffer    *PlayBuffer;        /* Zeiger auf Daten, die gesendet wurden */
  63.  
  64.     struct Buffer    Buf1;                /* Die beiden Puffer */
  65.     U8                BD1[B_BLOCKSIZE];
  66.  
  67.     struct Buffer    Buf2;
  68.     U8                BD2[B_BLOCKSIZE];
  69. };
  70.  
  71.  
  72. /*
  73. **    Struktur eines Lese- oder Schreibjobs
  74. */
  75. struct BChannel_Job
  76. {
  77.     IC_NODE    Node;                        /* Verkettung */
  78.  
  79.     U16        Flags;                        /* JOBF_... */
  80.     U8        State;                        /* JOBSTATE_... */
  81.     U8        pad;
  82.  
  83.     FILE    *File;                        /* File handle */
  84.  
  85.     U32        SigProc;                    /* Für Signalling des Job-Endes */
  86.  
  87.     U16        ActVolume;                    /* Aktuelle Lautstärke */
  88.     U16        EndVolume;                    /* Ziel-Lautstärke */
  89.  
  90.     struct BChannel    *BChannel;            /* Zugehöriger B-Channel */
  91.  
  92.     struct Buffer    *WriteBuffer;        /* Zeiger auf zu manipulierende Daten */
  93.     struct Buffer    *PlayBuffer;        /* Zeiger auf Daten, die gesendet wurden */
  94.  
  95.     struct Buffer    Buf1;                /* Die beiden Puffer */
  96.     U8                BD1[B_BUFFERSIZE];
  97.  
  98.     struct Buffer    Buf2;
  99.     U8                BD2[B_BUFFERSIZE];
  100. };
  101.  
  102.  
  103. #define JOBF_READ            0x01
  104. #define JOBF_WRITE            0x02
  105.  
  106. #define JOBF_LOOP            0x10
  107. #define JOBF_AUTOFREE        0x20        /* Job freigeben wenn fertig */
  108.  
  109. #define JOBSTATE_IDLE        0
  110. #define JOBSTATE_RUNNING    1
  111. #define JOBSTATE_TERMINATED    2
  112.  
  113.  
  114. /*
  115. **    Variable
  116. */
  117. #ifdef _BCHANNELJOBS
  118.  
  119. NEW_LIST( bchannellist );    /* Liste der aktiven B-Kanäle */
  120.  
  121. #else
  122.  
  123. extern IC_LIST        bchannellist;
  124.  
  125. #endif
  126.  
  127.  
  128. /*
  129. **    Prototypes
  130. */
  131.  
  132. struct BChannel *
  133. BChannel_New( U32 );
  134.  
  135. VOID
  136. BChannel_Free( struct BChannel * );
  137.  
  138. struct BChannel *
  139. BChannel_Find( U32 );
  140.  
  141. struct BChannel_Job *
  142. BChannel_AddJob( struct BChannel *, U8 *, U16, U16, U32 );
  143.  
  144. VOID
  145. BChannel_FreeJob( struct BChannel_Job * );
  146.  
  147. VOID
  148. BChannel_DataB3Ind( U32, U8 *, U16 );
  149.  
  150. VOID
  151. BChannel_DataB3Conf( U32 );
  152.  
  153. #endif
  154.